Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

211
Vistas
¿Qué significa "como const" en TypeScript y cuál es su caso de uso?

Estoy confundido acerca del elenco as const . Revisé algunos documentos y videos, pero no los entendí completamente.

Mi preocupación es ¿qué significa as const en el siguiente código y cuál es el beneficio de usarlo?

 const args = [8, 5] as const; const angle = Math.atan2(...args); console.log(angle);
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Si tuviera que escribir const args = [8, 5] , nada le impediría escribir también args[0] = 23 o args.push(30) o cualquier otra cosa para modificar esa matriz. Todo lo que ha hecho es decirle a TS/JS que la variable llamada args apunta a esa matriz específica, por lo que no puede cambiar a qué hace referencia (por ejemplo, no puede hacer args = "something else" ). Puede modificar la matriz, simplemente no puede cambiar a qué apunta su variable.

Por otro lado, agregar as const a una declaración ahora realmente la hace constante. Todo es de solo lectura, por lo que no puede modificar la matriz en absoluto.


Para aclarar, como se señala en los comentarios:

"realmente lo hace constante" podría implicar que hay algún efecto de tiempo de ejecución cuando no lo hay. En tiempo de ejecución, args.push(30) seguirá modificando la matriz. Todo lo que hace const es hacer que el compilador de TypeScript se queje si lo ve haciéndolo. – jcalz

as const solo afecta al compilador, y hay una excepción a su efecto de solo lectura (ver los comentarios). Pero en general, esa sigue siendo la principal diferencia de uso entre const y as const . Uno se usa para hacer que una referencia sea inmutable y el otro se usa para hacer que lo que se hace referencia sea inmutable.

over 4 years ago · Santiago Trujillo Denunciar

0

Esa es una afirmación const . Aquí hay una publicación útil sobre ellos , y aquí está la documentación .

Cuando construimos nuevas expresiones literales con aserciones constantes, podemos indicarle al lenguaje que

  • no se deben ampliar los tipos literales en esa expresión (por ejemplo, no pasar de "hola" a cadena)
  • los objetos literales obtienen propiedades de solo lectura
  • los literales de matriz se convierten en tuplas de solo lectura

Con const args = [8, 5] as const; , se aplica la tercera viñeta, y tsc entenderá que significa:

 // Type: readonly [8, 5] const args = [8, 5] as const; // Ok args[0]; args[1]; // Error: Tuple type 'readonly [8, 5]' of length '2' has no element at index '2'. args[2];

Sin la afirmación:

 // Type: number[] const args = [8, 5]; // Ok args[0]; args[1]; // Also Ok. args[2];
over 4 years ago · Santiago Trujillo Denunciar

0

En pocas palabras, le permite crear objetos completamente de solo lectura , esto se conoce como const assertion , en su código as const significa que los valores de las posiciones de la matriz son de readonly , aquí hay un ejemplo de cómo funciona:

 const args = [8, 5] as const; args[0] = 3; // throws "Cannot assign to '0' because it is a read-only args.push(3); // throws "Property 'push' does not exist on type 'readonly [8, 5]'"

Puede ver en el último error lanzado, que args = [8, 5] as const se interpreta como args: readonly [8, 5] , eso es porque la primera declaración es equivalente a una tupla de solo lectura .

Hay algunas excepciones en las que las afirmaciones son "totalmente de solo lectura", puede consultarlas aquí . Sin embargo, el beneficio general es el comportamiento de readonly que se agrega a todos sus atributos de objeto .

 const args = [8, 5]; // Without `as const` assert; `args` stills a constant, but you can modify its attributes args[0] = 3; // -- WORKS args.push(3); // -- WORKS // You are only prevented from assigning values directly to your variable args = 7; // -- THROWS ERROR

Para obtener más detalles, aquí hay una lista de otras preguntas/respuestas relacionadas que me ayudaron a comprender la afirmación const:

  1. ¿Cómo declaro una tupla de matriz de solo lectura en TypeScript?
  2. ¿Alguna diferencia entre las aserciones de tipo y el operador as nuevo en TypeScript?
  3. Tuplas de solo lectura mecanografiadas
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda